﻿<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SelectResponsibles.ascx.cs" Inherits="UserControls_SelectResponsibles" %>

<%= GetValueHtml() %>
<asp:LinkButton ID="OpenDialog" runat="server" Text="Seleccionar"></asp:LinkButton>
<div id="SelectedPeople" runat="server">
    <asp:Repeater ID="ActiveResponsibleRepeater" runat="server">
        <HeaderTemplate>
            <table width="570" cellpadding="0" cellspacing="0" border="0" class="dataTable">
                <col width="200" />
                <col width="130" />
                <col width="80" />
                <col width="60" />
                <col width="80" />
                <thead>
                    <tr class="header">
                        <th>Nombre</th>
                        <th>Fecha Inicio</th>
                        <th colspan="3" align="center">Acciones</th>
                    </tr>
                </thead>
                <tbody>
        </HeaderTemplate>
        <ItemTemplate>
            <tr class="item0">
                <td>
                    <asp:Literal ID="NombreLiteral" runat="server"
                        Text="<%# Bind('Nombre') %>">  
                    </asp:Literal>
                </td>
                <td>
                    <asp:Literal ID="FechaInicioLiteral" runat="server"
                        Text="<%# Bind('FechaInicio') %>">  
                    </asp:Literal>
                </td>
                <td>
                    <a href="<%# Bind('AdministrativoId') %>" runat="server" id="reassign" class='<%# GetClassName("Reassign") %>'
                        title="Reemplaza el responsable por otro administrativo, colocando el antiguo responsable en el historial de responsables">
                        Reasignar
                    </a>
                </td>
                <td>
                    <a href="<%# Bind('AdministrativoId') %>" runat="server" id="remove" class='<%# GetClassName("Remove") %>'
                        title="Quita el responsable y lo coloca en el historial de responsables">
                        Remover
                    </a>
                </td>
                
                <td>
                    <a href="<%# Bind('AdministrativoId') %>" runat="server" id="delete" class='<%# GetClassName("Delete") %>'>
                        Eliminar
                    </a>
                </td>
            </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
            <tr class="item1">
                <td>
                    <asp:Literal ID="NombreLiteral" runat="server"
                        Text="<%# Bind('Nombre') %>">  
                    </asp:Literal>
                </td>
                <td>
                    <asp:Literal ID="FechaInicioLiteral" runat="server"
                        Text="<%# Bind('FechaInicio') %>">  
                    </asp:Literal>
                </td>
                <td>
                    <a href="<%# Bind('AdministrativoId') %>" runat="server" id="reassign" class='<%# GetClassName("Reassign") %>'
                        title="Reemplaza el responsable por otro administrativo, colocando el antiguo responsable en el historial de responsables">
                        Reasignar
                    </a>
                </td>
                <td>
                    <a href="<%# Bind('AdministrativoId') %>" runat="server" id="remove" class='<%# GetClassName("Remove") %>'
                        title="Quita el responsable y lo coloca en el historial de responsables">
                        Remover
                    </a>
                </td>
                
                <td>
                    <a href="<%# Bind('AdministrativoId') %>" runat="server" id="delete" class='<%# GetClassName("Delete") %>'
                        title="Elimina el responsable sin colocarlo en el historial de responsables">
                        Eliminar
                    </a>
                </td>
            </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
                    <asp:Literal ID="EmptyTemplateLiteral" runat="server" Visible="<%# IsRepeaterVisible() %>"
                        Text='<tr class="item0 emptyDataSet"><td colspan="5" align="center">No hay responsables seleccionados</td></tr>'>
                    </asp:Literal>
                        
                </tbody>
            </table>
        </FooterTemplate>
    </asp:Repeater>
</div>

<!--Dialog-->
<asp:Panel ID="DialogSearchPanel" runat="server"
    ToolTip="Busqueda de Administrativos">
    <div>
        <div style="text-align:center">
            <asp:TextBox ID="SearchTextBox" runat="server"
                CssClass="searchField">
            </asp:TextBox>
            <asp:LinkButton ID="SearchLinkButton" runat="server"
                Text="Buscar"
                CssClass="button">
            </asp:LinkButton>
        </div>
        <div style="margin: 0 auto;margin-top: 10px;width:580px;">
            <table width="580" cellpadding="0" cellspacing="0" border="0" class="dataTable">
                <col width="500" />
                <col width="100" />
                <thead>
                    <tr class="header">
                        <th>Nombre</th>
                        <th>&nbsp;</th>
                    </tr>
                </thead>
                <tbody id="results" runat="server">
                    <tr class="item0">
                        <td colspan="2" align="center">No hay resultados para su busqueda</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</asp:Panel>

<asp:HiddenField ID="ServicioIdHiddenField" runat="server" Value="0" />
<asp:HiddenField ID="ReadOnlyHiddenField" runat="server" Value="false" />

<asp:HiddenField ID="NuevosResponsablesHiddenField" runat="server" Value="[]" />
<asp:HiddenField ID="ResponsablesInactivosHiddenField" runat="server" Value="[]" />
<asp:HiddenField ID="ResponsablesEliminadosHiddenField" runat="server" Value="[]" />

<script type="text/javascript">

    //Variables 
    var nuevosResponsables = new Array();
    var responsablesEliminados = new Array();
    var historialResponsables = new Array();
    var operacionAlSeleccionar = "Add";
    var responsableToReassign = false;
    var rowToDelete = false;

    $(document).ready(function () {
        $("#<%= ClientID %>").val("<%= GetControlValue() %>");
        <%= ClientID %>_updateArrays();
        $("#<%= SelectedPeople.ClientID %> a").addClass("controlHint");
        $(".controlHint").tipTip({ defaultPosition: 'top', activation: 'hover', maxWidth: "auto" });

        if ($("#<%= ReadOnlyHiddenField.ClientID %>").val().toLowerCase() == "true") {
            $("#<%= SelectedPeople.ClientID %> > table > thead > tr > th:last-child").remove();
            $("#<%= SelectedPeople.ClientID %> > table > thead > tr > th:last-child").remove();
            $('.<%= GetClassName("Reassign") %>').parent().remove();
            $('.<%= GetClassName("Remove") %>').parent().remove();
            $('.<%= GetClassName("Delete") %>').parent().remove();
            $("#<%= SelectedPeople.ClientID %> > table > tbody > tr > td:last-child").remove();
            $("#<%= SelectedPeople.ClientID %> > table col").remove();
            $("#<%= SelectedPeople.ClientID %> > table").attr("width","400");
            
        }

        $("#<%= DialogSearchPanel.ClientID %>").dialog({
            resizable: false,
            width: 650,
            height: 350,
            modal: true,
            autoOpen: false,
            beforeClose: function (event, ui) { <%= ClientID %>_resetSearcher(); },
            buttons: {
                'Cerrar': function () {
                    $(this).dialog('close');
                }
            }
        });

        $("#<%= SearchTextBox.ClientID %>").keypress(function (event) {
            if (event.keyCode == 13) {
                <%= ClientID %>_doSearch();
            }
        });

        $("#<%= SearchLinkButton.ClientID %>").click(function () {
            <%= ClientID %>_doSearch();
            return false;
        });
        $("#<%= OpenDialog.ClientID %>").click(function () {
            $("#tiptip_holder").hide();
            $("#<%= DialogSearchPanel.ClientID %>").dialog("open");
            operacionAlSeleccionar = "Add";
            return false;
        });

        $('.<%= GetClassName("Reassign") %>').live("click", function () {
            $("#tiptip_holder").hide();
            $("#<%= DialogSearchPanel.ClientID %>").dialog("open");
            rowToDelete = $(this).parent().parent();
            var id = $(this).attr("href").replace('../', '');
            id = id.replace('../', '');
            id = id.replace('../', '');
            id = id.replace('../', '');
            id = id.replace('../', '');
            id = id.replace('UserControls/', '');
            var nombre = $(rowToDelete).children("td:first-child").html();
            var now = new Date();
            responsableToReassign = <%= ClientID %>_getResponsableJSON(id, nombre, 0, <%= ClientID %>_getDateToString(now));
            operacionAlSeleccionar = "Reassign";
            return false;
        });

        $('.<%= GetClassName("Remove") %>').live("click", function () {
            $("#tiptip_holder").hide();
            var id = $(this).attr("href").replace('../', '');
            id = id.replace('../', '');
            id = id.replace('../', '');
            id = id.replace('../', '');
            id = id.replace('../', '');
            id = id.replace('UserControls/', '');
            rowToDelete = $(this).parent().parent();
            var nombre = $(rowToDelete).children("td:first-child").html();
            var now = new Date();
            var responsable = <%= ClientID %>_getResponsableJSON(id, nombre, 0, <%= ClientID %>_getDateToString(now));
            if (!<%= ClientID %>_isInNuevosResponsables(responsable.AdministrativoId))
                historialResponsables[historialResponsables.length] = responsable;
            else
                <%= ClientID %>_removeFromNuevosResponsables(id);
            <%= ClientID %>_updateArrays();
            $(rowToDelete).remove();
            if ($("#<%= SelectedPeople.ClientID %> > table > tbody > tr").length == 0)
                $("#<%= SelectedPeople.ClientID %> > table > tbody").html(<%= ClientID %>_getEmptyData());
            else
                <%= ClientID %>_updateClassRows();
            $(".controlHint").tipTip({ defaultPosition: 'top', activation: 'hover' });

            return false;
        });

        $('.<%= GetClassName("Delete") %>').live("click", function () {
            var id = $(this).attr("href").replace('../', '');
            id = id.replace('../', '');
            id = id.replace('../', '');
            id = id.replace('../', '');
            id = id.replace('../', '');
            id = id.replace('UserControls/', '');
            if (!<%= ClientID %>_isInNuevosResponsables(id))
                responsablesEliminados[responsablesEliminados.length] = id;
            else
                <%= ClientID %>_removeFromNuevosResponsables(id);

            <%= ClientID %>_updateArrays();

            $(this).parent().parent().remove();

            if ($("#<%= SelectedPeople.ClientID %> > table > tbody > tr").length == 0)
                $("#<%= SelectedPeople.ClientID %> > table > tbody").html(<%= ClientID %>_getEmptyData());
            else
                <%= ClientID %>_updateClassRows();
            $(".controlHint").tipTip({ defaultPosition: 'top', activation: 'hover' });
            return false;
        });
    });

    function <%= ClientID %>_resetSearcher() {
        <%= ClientID %>_setEmptyData();
        $('#<%= SearchTextBox.ClientID %>').val("");
    }

    function <%= ClientID %>_getIdList(list) {
        var ids = "";
        for (var i = 0; i < list.length; i++) {
            ids += list[i] + ',';
        }
        if (ids.length > 0)
            ids = ids.substring(0, ids.length - 1);
        return ids;
    }

    function <%= ClientID %>_updateClassRows() {
        $("#<%= SelectedPeople.ClientID %> > table > tbody > tr").removeClass("item0");
        $("#<%= SelectedPeople.ClientID %> > table > tbody > tr").removeClass("item1");
        var rows = $("#<%= SelectedPeople.ClientID %> > table > tbody > tr");
        for (var i = 0; i < rows.length; i++) {
            $(rows[i]).addClass('item' + (i % 2));
        }
    }

    function <%= ClientID %>_buildResult(result) {
        if (result.length == 0) {
            <%= ClientID %>_setEmptyData();
            return;
        }
        var html = '';
        for (var i = 0; i < result.length; i++) {
            var persona = result[i];
            html += '<tr class="item' + (i % 2) + '">' +
                '<td>' + persona.Nombre + '</td>' +
                '<td><a onclick="return <%= ClientID %>_select(' + persona.PersonaId + ',\'' + persona.Nombre + '\');" href="#">Seleccionar</a></td>' +
                '</tr>';
        }
        $("#<%= results.ClientID %>").html(html);
    }

    function <%= ClientID %>_buildRow(id, nombre, fechaInicio, i) {
        return '<tr class="item' + i + '"><td>' + nombre + '</td><td>' + fechaInicio + '</td>' +
                    '<td><a href="' + id + '" class="<%= GetClassName("Reassign") %> controlHint" title="Reemplaza el responsable por otro administrativo, colocando el antiguo responsable en el historial de responsables" >Reasignar</a></td>' +
                    '<td><a href="' + id + '" class="<%= GetClassName("Remove") %> controlHint" title="Quita el responsable y lo coloca en el historial de responsables">Quitar</a></td>' +
                    '<td><a href="' + id + '" class="<%= GetClassName("Delete") %> controlHint" title="Elimina el responsable sin colocarlo en el historial de responsables">Eliminar</a></td>' +
                '</tr>';
    }

    function <%= ClientID %>_doSearch() {
        var text = superTrim($("#<%= SearchTextBox.ClientID %>").val());
        var list = <%= ClientID %>_getValoresParaObviar();
        if (text == "") {
            return false;
        }
        $.ajax({
            type: "GET",
            contentType: "application/json; charset=utf-8",
            url: '<%= SearchRequestHandler %>?q=' + text + '&ids=' + list,
            dataType: "json",
            success: function (data) {
                <%= ClientID %>_buildResult(data);
            }
        });
    }

    function <%= ClientID %>_select(id, nombre) {
        var now = new Date();
        nuevosResponsables[nuevosResponsables.length] = <%= ClientID %>_getResponsableJSON(id, nombre,<%= ClientID %>_getDateToString(now),0);

        if (operacionAlSeleccionar == 'Reassign') {
            $("#<%= DialogSearchPanel.ClientID %>").dialog('close');
            if (responsableToReassign && !<%= ClientID %>_isInNuevosResponsables(responsableToReassign.AdministrativoId))
                historialResponsables[historialResponsables.length] = responsableToReassign;
            else {
                if (responsableToReassign)
                    <%= ClientID %>_removeFromNuevosResponsables(responsableToReassign.AdministrativoId);
            }
            if(rowToDelete)
                $(rowToDelete).remove();
        }
        rowToDelete = false;
        responsableToReassign = false;
        var tbl = "#<%= SelectedPeople.ClientID %> > table > tbody";

        var count = $(tbl + " > tr.emptyDataSet").length;
        if (count == 1) {
            count = 0;
            $(tbl).html("");
        } else
            count = $(tbl + " > tr").length;
        
        var row = <%= ClientID %>_buildRow(id, nombre, <%= ClientID %>_getDateToString(now), count % 2);
        
        $(tbl).append(row);
        $("#<%= ClientID %>").val("1");
        <%= ClientID %>_doSearch();
        <%= ClientID %>_updateClassRows();
        <%= ClientID %>_updateArrays();
        $(".controlHint").tipTip({ defaultPosition: 'top', activation: 'hover' });
        return false;
    }

    function <%= ClientID %>_setEmptyData() {
        $("#<%= results.ClientID %>").html('<tr class="item0">' +
                '<td colspan="2" align="center">No hay resultados para su busqueda</td>' +
            '</tr>');
    }

    function <%= ClientID %>_getEmptyData() {
        
        $("#<%= SelectedPeople.ClientID %> > table > tbody").html('<tr class="item0 emptyDataSet">' +
                '<td colspan="5" align="center">No hay responsables activos</td>' +
            '</tr>');
        $("#<%= ClientID %>").val("");
       
    }

    function <%= ClientID %>_getValoresParaObviar() {
        var trs = $('a.<%= GetClassName("Reassign") %>');
        var list = "";
        for (var i = 0; i < trs.length; i++) {
            var aux = $(trs[i]).attr('href').replace('../', '');
            aux = aux.replace('../', '');
            aux = aux.replace('../', '');
            aux = aux.replace('../', '');
            aux = aux.replace('../', '');
            aux = aux.replace('UserControls/', '');
            list += aux + ',';
        }
        if (list.length > 0)
            list = list.substring(0, list.length - 1);
        return list;
    }

    function <%= ClientID %>_removeFromNuevosResponsables(id) {
        var aux = new Array();
        for (var i = 0; i < nuevosResponsables.length; i++) {
            if (nuevosResponsables[i].AdministrativoId == id)
                continue;
            aux[aux.length] = nuevosResponsables[i];
        }
        nuevosResponsables = aux;
    }

    function <%= ClientID %>_isInNuevosResponsables(id) {
        for (var i = 0; i < nuevosResponsables.length; i++) {
            if (nuevosResponsables[i].AdministrativoId == id)
                return true;
        }
        return false;
    }
    
    function <%= ClientID %>_getResponsableJSON(id, nombre, fechaInicio, fechaFin){
        var obj =  {
            AdministrativoId : id,
            Nombre : nombre,
            FechaInicio : fechaInicio,
            FechaFin : fechaFin
        }
        return obj;
    }


    function <%= ClientID %>_getDateToString(now) {

        var month = now.getMonth() + 1;
        if (month < 10)
            month = "0" + month;

        var day = now.getDate();
        if (day < 10)
            day = "0" + day;

        var hour = now.getHours();
        if (hour < 10)
            hour = "0" + hour;

        var min = now.getMinutes();
        if (min < 10)
            min = "0" + min;

        var sec = now.getSeconds();
        if (sec < 10)
            sec = "0" + sec;

        return now.getFullYear() + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + sec;
    }

    function <%= ClientID %>_updateArrays(){
        $("#<%= NuevosResponsablesHiddenField.ClientID %>").val(JSON.stringify(nuevosResponsables));
        $("#<%= ResponsablesInactivosHiddenField.ClientID %>").val(JSON.stringify(historialResponsables));
        $("#<%= ResponsablesEliminadosHiddenField.ClientID %>").val(JSON.stringify(responsablesEliminados));
    }

</script>